package com.ce.pms.charge.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;

import com.ce.pms.base.dao.impl.PmsBaseDaoImpl;
import com.ce.pms.charge.dao.IFeeBankDao;
import com.ce.pms.charge.model.BankDomain;
import com.ce.util.BlankUtil;
import com.sitechasia.webx.core.support.Page;
/**
 * 功能描述:  划款银行Dao实现类
 * <p>版权所有：中企动力
 * <p>未经本公司许可，不得以任何方式复制或使用本程序任何部分
 *
 * @author  胡煦
 * Create on:2008-7-30
 * Edit author:
 * Edit on:
 * 修改原因：

 */

public class FeeBankDaoImpl extends PmsBaseDaoImpl<BankDomain> implements IFeeBankDao {
	/**
	 * 方法描述: 分页查询所有划款银行
	 * @author 胡煦
	 * Create on:2008-7-30
	 * @param pageNo,pageSize
	 * @return 返回当前页的查询结果
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Page queryAllFeeBankByPage(int pageNo, int pageSize,String order){
		StringBuffer queryStr =  new StringBuffer("FROM BankDomain bd where 1=1");
		if(!BlankUtil.isBlank(order)){
			queryStr.append("order by bd.bankName ").append(order);
		}
		queryStr.append(" order by bd.sysInfo.sysDate");

		return this.pagedQueryByPageNo(queryStr.toString(), pageNo, pageSize);
	}
	/**
	 * 方法描述:根据划款银行名称查询记录数
	 * 注：新建判断name的唯一性时，bankId为null；修改判断name的唯一性时，则需要传入修改前的bankId<br>
	 * @author 胡煦
	 * Create on:2008-7-30
	 * @param bankName
	 * @return Long
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Long checkBankNameIsOnly(String bankName,Long bankId){
		StringBuffer hql=new StringBuffer();
		List list = new ArrayList();
		list.add(bankName);

		hql.append("select count(*) FROM  BankDomain bd WHERE bd.bankName = ? ");
		if(bankId!=null){
			hql.append(" and bd.id <> ?");
			list.add(bankId);
		}
		Query query=this.createQuery(hql.toString(), list.toArray());
		Object result=query.uniqueResult();
		return (Long)result ;
	}
	/**
	 * 方法描述:根据划款银行银行代码查询记录数
	 * 注：新建判断Code的唯一性时，bankId为null；修改判断Code的唯一性时，则需要传入修改前的bankId<br>
	 * @author 胡煦
	 * Create on:2008-7-30
	 * @param bankCode
	 * @return Long
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Long checkBankCodeIsOnly(String bankCode,Long bankId){
		StringBuffer hql=new StringBuffer();
		List list = new ArrayList();
		list.add(bankCode);

		hql.append("select count(*) FROM  BankDomain bd WHERE bd.bankCode = ? ");
		if(bankId!=null){
			hql.append(" and bd.id <> ?");
			list.add(bankId);
		}
		Query query=this.createQuery(hql.toString(), list.toArray());
		Object result=query.uniqueResult();
		return (result == null ? null : (Long)result );


	}
	/**
	 * 方法描述: 根据划款银行银联代码查询记录数
	 * 注：新建判断Code的唯一性时，bankId为null；修改判断Code的唯一性时，则需要传入修改前的bankId<br>
	 * @author 胡煦
	 * Create on:2008-7-30
	 * @param uniteCode
	 * @return Long
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Long checkUniteCodeIsOnly(String uniteCode,Long bankId){
		return null;
	}
	/**
	 * 方法描述:根据划款银行行输出文件名起头查询记录数
	 * 注：新建判断oFilePrefix的唯一性时，bankId为null；修改判断oFilePrefix的唯一性时，则需要传入修改前的bankId<br>
	 * @author 胡煦
	 * Create on:2008-7-30
	 * @param oFilePrefix
	 * @return Long
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Long checkoFilePrefixIsOnly(String oFilePrefix,Long bankId){
		StringBuffer hql=new StringBuffer();
		List list = new ArrayList();
		list.add(oFilePrefix);

		hql.append("select count(*) FROM  BankDomain bd WHERE bd.outFilePrefix = ? ");
		if(bankId!=null){
			hql.append(" and bd.id <> ?");
			list.add(bankId);
		}
		Query query=this.createQuery(hql.toString(), list.toArray());
		Object result=query.uniqueResult();
		return (result == null ? null : (Long)result );
	}
}
